#include "protocol_descriptor.h"

namespace protomsg{
  // How to store the data into the data-structure ?
  // Since hash map will take advantage of the O(1)
  // searching complexity , therefore , instead of
  // storing the data into many hash-map , we store
  // all the data into 3 hash map .
  // 1. Enumerator Hash Map
  // This hash map will store all the Key-Value-Pair
  // The Name of Enumeration Value Pair will take advantage
  // of managed name ,we will managed the name of the this
  // enumeration using a long name like :
  // Namespace@MessageName@FieldName@EnumerationName@Key
  // eg: <Message Name="message1" Namespace"ns1">
  //      <MessageField Name="f1" Type="Enum" Option="Required" >
  //      <Enumerator Key="key1" Value="1" />
  //      </MessageField>
  //     </Message>
  // As described above , the key-value pair in the enumeration 
  // will be stored as ns1@message@f1@key1 . The rule is simple
  // any definition of the enumeration will only be visible inside
  // the scope of its declaration scope ,the name is reversely 
  // move up .
  // 2. Scalar Field Hash Map
  // This hash map will only store the scalar field definition , 
  // typically the fint32 , fint64 , real , boolean , int , string 
  // type field . It will also use the name manage to gain better
  // performance in hash map
  // 3. Message Declaration Field Hash Map
  // This hash map will only store the Message Declaration . In fact
  // A declaration of a message is a collection of
  // many pointer which point to the specific ScalarField
  // and Enumeration Field .






}// namespace protomsg

